/** * Copyright 2016 Hortonworks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ package com.hortonworks.registries.storage.impl.jdbc.config; import com.zaxxer.hikari.HikariConfig; import java.util.HashMap; import java.util.Map; import java.util.Properties; /** Factory to build simple HikariCP configurations */ public class HikariBasicConfig { // Hikari config to connect to MySql databases public static Map<String, Object> getMySqlHikariConfig() { Map<String, Object> config = new HashMap<>(); config.put("dataSourceClassName", "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); config.put("dataSource.url", "jdbc:mysql://localhost/test"); config.put("dataSource.user", "root"); return config; } public static HikariConfig getMySqlHikariTestConfig() { final Map<String, Object> config = getMySqlHikariConfig(); return getHikariConfig(config, false); } private static HikariConfig getHikariConfig(final Map<String, Object> config, boolean autoCommit) { HikariConfig hikariConfig = new HikariConfig(new Properties(){{putAll(config);}}); // need to do this because of a bug in Hikari that does not allow the override of the // property dataSource.autoCommit hikariConfig.setAutoCommit(autoCommit); return hikariConfig; } // Hikari config to connect to H2 databases. Useful for integration tests public static Map<String, Object> getH2HikariConfig() { Map<String, Object> config = new HashMap<>(); config.put("dataSourceClassName", "org.h2.jdbcx.JdbcDataSource"); // In memory configuration. Faster, useful for integration tests config.put("dataSource.URL", "jdbc:h2:mem:test;MODE=MySQL;DATABASE_TO_UPPER=false"); // Embedded configuration. Facilitates debugging by allowing connecting to DB and querying tables // config.put("dataSource.URL", "jdbc:h2:~/test;MODE=MySQL;DATABASE_TO_UPPER=false"); return config; } public static HikariConfig getH2HikariTestConfig() { Map<String, Object> config = getH2HikariConfig(); return getHikariConfig(config, false); } }